#!/bin/bash

# Ctrl+C组合键会发送SIGINT信号，停止shell中当前运行的进程。 
# Ctrl+Z组合键会生成一个SIGTSTP信号，停止shell中运行的任何进程。

# 捕获SIGINT信号
# 每次使用Ctrl+C组合键，脚本都会执行trap命令中指定的echo语句，
# 而不是处理该信号并允许shell停止该脚本。
trap " echo I have trapped Ctrl-C" SIGINT

# 捕获EXIT信号
trap "echo 'Goodbye ...'" EXIT

count=1
while [[ count -lt 5 ]]; do
	echo "Loop #${count}"
	sleep 1
	count=$[ count + 1]
done

# 修改捕获
trap " echo I have modified the trap" SIGINT
count=1
while [[ count -lt 5 ]]; do
	echo "Second Loop #${count}"
	sleep 1
	count=$[ count + 1]
done

# 移除捕获
trap -- SIGINT
count=1
while [[ count -lt 5 ]]; do
	echo "Third Loop #${count}"
	sleep 1
	count=$[ count + 1]
done